/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.modelo.clases;

import com.ipartek.formacion.gestformwww.modelo.beans.Aula;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import com.ipartek.formacion.gestformwww.modelo.interfaces.IAulaDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author curso
 */
public class SQLServerAulaDAO implements IAulaDAO{
    private static ResourceBundle rb;

    public SQLServerAulaDAO() {
        rb = ResourceBundle.getBundle("com.ipartek.formacion.gestformwww.controlador.excepciones");
    }

    private Aula instanciarAula(ResultSet rs) throws SQLException{
        Aula aula = new Aula();
        
        aula.setAulId(rs.getInt("AulId"));
        aula.setAulNom(rs.getString("AulNom"));
        aula.setAulAforo(rs.getInt("AulAforo"));
        aula.setAulPCs(rs.getInt("AulPCs"));
        aula.setAulObserv(rs.getString("AulObserv"));
        aula.setAulActiva(rs.getBoolean("AulActiva"));

        return aula;
    }

    /**
     * Método que lista las aulas existentes.
     * @author Sara y Victor
     * @return ArrayList<Aula>: Devuelve una lista de aulas
     */
    public ArrayList<Aula> listarAulas() throws GestorFormacionExcepcion{
        ArrayList<Aula> aulas = new ArrayList<Aula>();
        Connection conexion = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        try {
            conexion = SQLServerDAOFactory.conecta();
        } catch (SQLException ex) {
            Logger.getLogger(SQLServerAulaDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new GestorFormacionExcepcion(rb.getString("no-conexion"));
        }

        try {
            stmt = conexion.prepareStatement("SELECT AulId, AulNom, AulAforo, AulPCs, AulObserv, AulActiva FROM AULA");
            rs = stmt.executeQuery();

            while (rs.next()){
                aulas.add(instanciarAula(rs));
            }

            stmt.close();
        } catch (SQLException ex) {
            Logger.getLogger(SQLServerAulaDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new GestorFormacionExcepcion(rb.getString("no-sql"));
        } finally {
            SQLServerDAOFactory.desconecta(conexion);
        }
        return aulas;
    }

}
